//package com.qunar.mina.app.handler;
//
//import java.util.List;
//
//import org.apache.lucene.index.Term;
//import org.apache.lucene.util.NumericUtils;
//
//import com.qunar.mina.app.service.IndexService;
//import com.qunar.mina.app.service.SearchService;
//import com.qunar.mina.app.service.impl.Indexer;
//import com.qunar.mina.app.service.impl.Searcher;
//import com.qunar.qcf.handler.InvokeHandler;
//import com.qunar.qcf.handler.annotation.Handler;
//import com.qunar.qcf.handler.annotation.Remote;
//import com.qunar.wireless.ugc.qcfclient.dto.Address;
//import com.qunar.wireless.ugc.qcfclient.dto.Query;
//import com.qunar.wireless.ugc.qcfclient.dto.QueryResult;
//
//@Handler(name = "addresshandler")
//public class SearcherHandler implements InvokeHandler {
//
//    private SearchService searcher = new Searcher();
//
//    private IndexService indexer = new Indexer();
//
//    /** -----------------------查询操作相关接口-------------------------- */
//
//    /**目的地查询*/
//    @Remote(url = "getDestin")
//    public QueryResult getDestinResult(Query query) {
//        QueryResult qr = searcher.POISearcher(query.getKeyword(), true, query.getFirst(), query.getMax(), "address",
//                query.getFields());
//
//        return qr;
//    }
//    /**POI查询*/
//    @Remote(url = "getPOI")
//    public QueryResult getPOIResult(Query query) {
//        QueryResult qr = searcher.POISearcher(query.getKeyword(), false, query.getFirst(), query.getMax(), "address",
//                query.getFields());
//
//        return qr;
//    }
//
//    /**通用地址查询查询*/
//    @Remote(url = "getquery")
//    public QueryResult getQueryResult(Query query) {
//        QueryResult qr = searcher.searcher(query.getKeyword(), query.getFirst(), query.getMax(), "address",
//                query.getFields());
//
//        return qr;
//    }
//
//    /**图片查询*/
//    @Remote(url = "getpic")
//    public QueryResult getPicResult(Query query) {
//        QueryResult qr = searcher.searcher(query.getKeyword(), query.getFirst(), query.getMax(), "record",
//                query.getFields());
//        return qr;
//    }
//    /**用户查询*/
//    @Remote(url = "getuser")
//    public QueryResult getUserResult(Query query) {
//        QueryResult qr = searcher.searcherScan(query.getKeyword(), query.getFirst(), query.getMax(), "user",
//                query.getFields());
//        return qr;
//    }
//
//    /**操作员查询*/
//    @Remote(url = "getauditor")
//    public QueryResult getAuditorResult(Query query) {
//        QueryResult qr = searcher.searcherScan(query.getKeyword(), query.getFirst(), query.getMax(), "auditor",
//                query.getFields());
//        return qr;
//    }
//    /**用户名模糊查询*/
//    @Remote(url = "fuzzyuser")
//    public QueryResult getFuzzyUser(Query query) {
//        QueryResult qr = searcher.fuzzySearcher(query.getKeyword(), query.getFirst(), query.getMax(),
//                query.getFields()[0]);
//        return qr;
//    }
//    /**用户名符查询查询*/
//    @Remote(url = "wildcarduser")
//    public QueryResult getWildCardUser(Query query) {
//        QueryResult qr = searcher.wildcardSearcher(query.getKeyword(), query.getFirst(), query.getMax(),
//                query.getFields()[0]);
//        return qr;
//    }
//
//    /** ----------------------- 地點索引相关接口-------------------------- */
//    /**创建全部索引*/
//    @Remote(url = "createindex")
//    public String createIndex() {
//        indexer.createAllIndex();
//        return "create index success";
//    }
//    /**删除地址索引*/
//    @Remote(url = "delAddrIndex")
//    public String delAddrIndex(Address a) {
//        Term term = new Term("addressId", NumericUtils.longToPrefixCoded(a.getAddressId()));
//        indexer.delIndex("address", term);
//        return "delete address index success";
//    }
//    /**批量删除地址索引*/
//    @Remote(url = "batchDelAddrIndex")
//    public String batchDelAddrIndex(List<Address> list) {
//
//        Term[] terms = new Term[list.size()];
//        for (int i = 0; i < list.size(); i++) {
//            Object o = list.get(i);
//            if (o instanceof Address) {
//                Address a = (Address) o;
//                terms[i] = new Term("addressId", NumericUtils.longToPrefixCoded(a.getAddressId()));
//            }
//        }
//
//        indexer.batchDelIndex("address", terms);
//        return "batch delete address index success";
//    }
//
//    /**插入地址索引*/
//    @Remote(url = "insertAddrIndex")
//    public String insertAddrIndex(Address a) {
//        indexer.addIndex(a, "address");
//        return "insert address index success";
//    }
//
//    /**批量插入地址索引*/
//    @Remote(url = "batchInsertAddrIndex")
//    public String batchInsertAddrIndex(List<Address> list) {
//        indexer.batchAddIndex(list, "address");
//        return "batch insert address index success";
//    }
//
//    /**更新地址索引*/
//    @Remote(url = "updateAddrIndex")
//    public String updateAddrIndex(Address a) {
//        Term term = new Term("addressId", NumericUtils.longToPrefixCoded(a.getAddressId()));
//        indexer.updateIndex(a, "address", term);
//        return "update address index success";
//    }
//
//    /**批量更新地址索引*/
//    @Remote(url = "batchUpdateAddrIndex")
//    public String batchUpdateAddrIndex(List<?> list) {
//        Term[] terms = new Term[list.size()];
//        for (int i = 0; i < list.size(); i++) {
//            Object o = list.get(i);
//            if (o instanceof Address) {
//                Address a = (Address) o;
//                terms[i] = new Term("addressId", NumericUtils.longToPrefixCoded(a.getAddressId()));
//            }
//        }
//        indexer.batchUpdateIndex(list, "address", terms);
//        return "batch update address index success";
//    }
//
//}
